import datetime
import re
import ulid
from datetime import datetime, timezone, timedelta


def is_valid_username(username):
    """
    用户名合法性检验
    """
    # 检查用户名长度是否在3到15之间
    if len(username) < 3 or len(username) > 15:
        return False, "用户名长度必须在3到15个字符之间"

    # 检查用户名是否只包含字母、数字、下划线
    if not re.match(r'^\w+$', username):
        return False, "用户名只能包含字母、数字和下划线"

    # 用户名合法
    return True, "用户名合法"


SHA_TZ = timezone(
    timedelta(hours=8),
    name='Asia/Shanghai',
)


def get_curtime():
    """
    获取北京时间
    """
    # 协调世界时
    utc_now = datetime.utcnow().replace(tzinfo=timezone.utc)
    return utc_now.astimezone(SHA_TZ)


def uuid_int_10() -> int:
    """
    生成唯一id
    """
    uid = ulid.new()
    return uid.int % 10000000000


def is_valid_token(token):
    """
    token合法性验证
    """
